package com.qth.valet.common.schedule;

import com.qth.valet.service.OrdersService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Component;

import javax.annotation.Resource;
import java.text.SimpleDateFormat;
import java.util.Date;

@Slf4j
@Component
public class ScheduledTasks {

    @Resource
    private OrdersService orderService;

    private static final SimpleDateFormat dateFormat = new SimpleDateFormat("HH:mm:ss");
    /*
    // 固定延迟执行：上一次任务执行完毕后，延迟固定时间再执行
    @Scheduled(fixedDelay = 5000) // 5000毫秒 = 5秒
    public void taskWithFixedDelay() {
        System.out.println("固定延迟执行的任务 - 当前时间：" + dateFormat.format(new Date()));
    }

    // 固定速率执行：以上一次任务开始时间为基准，间隔固定时间后再次执行
    @Scheduled(fixedRate = 5000)
    public void taskWithFixedRate() {
        System.out.println("固定速率执行的任务 - 当前时间：" + dateFormat.format(new Date()));
    }

    // 初始延迟后执行：首次执行前延迟指定时间，之后按固定速率执行
    @Scheduled(initialDelay = 3000, fixedRate = 5000) // 初始延迟3秒
    public void taskWithInitialDelay() {
        System.out.println("带初始延迟的任务 - 当前时间：" + dateFormat.format(new Date()));
    }*/

    // Cron表达式：更灵活的定时配置
    //@Scheduled(cron = "0 */5 * * * ?") // 每5分钟的第0秒执行
    public void taskWithCronExpression() {
        orderService.selectDriverBySchedule();
        log.info("自动派单定时器 - 当前时间：" + dateFormat.format(new Date()));
    }
}

